const cors = require('cors')//处理跨域
const bodyParser = require('body-parser')//处理请求信息解析
const express = require('express')//引入express框架
const compression = require('compression')//使用gzip压缩服务

const token = require('./comment/token.js')//引入token模块
const adminRouter = require('./router/adminRouter.js')//管理员路由信息
const customerRouter = require('./router/customerRouter.js')//客户路由信息中间件
const vipRouter = require('./router/vipRouter.js')//引入会员等级信息中间件
const roomTypeRouter = require('./router/roomTypeRouter.js')//引入房型路由信息中间件
const roomRouter = require('./router/roomRouter.js')//引入房间信息路由中间件
const orderRouter = require('./router/orderRouter.js')//引入订单路由中间件

const app = express()

app.use(compression())//使用gzip压缩传输
app.use(cors())//处理跨域中间件

app.use(bodyParser.json())//解析json数据

app.use(bodyParser.urlencoded({//解析post请求数据
    extended:false
}))

app.use('/public',express.static('public'))//使用静态资源中间件

app.use((req,res,next) =>{//全局配置token信息
    if(req.path == "/admin/login" || req.path == "/admin/register" ){
        next();
    }else{
        token.checkToken(req.headers.authorization)//token验证成功！
        .then(data =>{
            next()
        })
        .catch(err =>{
            res.status(401).json({
                success:false,
                msg:'token错误或者token失效！重新登录！',
                error:err
            })
        })
    }
})

app.use('/admin',adminRouter)//使用管理员路由中间件
app.use('/customer',customerRouter)//客户路由路由中间件
app.use('/vip',vipRouter)//使用会员等级路由中间件
app.use('/roomtype',roomTypeRouter)//使用房型路由信息中间件
app.use('/room',roomRouter)//使用房间路由中间件
app.use('/order',orderRouter)//使用订单路由中间件


app.listen(8888,() =>{
    console.log('node服务器启动成功！')
})